/**
 * Array
 *  ES体系的数组也是一组有序的数组，数组中的每个槽位可以储存任意类型的数据
 *  6.2.1 创建数组
 *      1.Array构造函数，new Array()
 *          new Array(20)固定长度20的数组
 *          new Array("GEM") 一个字符串数组
 *          可以省略new  Array（"mom"）
 *      2.数组字面量 let arr = ["red"]
 *      3.Array.from()将类数组结构转成数组实例
 *          第一个参数是个类数组对象，即任何可迭代的结构，或者有个length属性和可索引元素的结构。
 *          1.字符串可以拆成数组
 *          2.集合和映射转成新数组 Map 或者 set
 *          3.对现有数组进行浅拷贝
 *          4.可以使用任何可迭代对象
 *          5.也能转换带有必要属性的自定义对象
 *          第二个参数是个可选的映射函数参数(会遍历一遍数组中的内容)
 *          第三个参数是个可选的参数，用于指定第二个映射函数中的this值
 *      4.Array.of()将一组参数转成数组实例
 *  6.2.2 数组空位  为了避免一些问题建议使用undefined替代
 *      使用数组字面量初始化数组时，可以使用一串逗号来创建空位（hole）。
 *      ES6 新增方法普遍将这些空位当成存在的元素，只不过值为 undefined
 *      ES6 之前的方法则会忽略这个空位，但具体的行为也会因方法而异： 
 *       const options = [1,,,,5];  
 *       // map()会跳过空位置 
 *       console.log(options.map(() => 6)); // [6, undefined, undefined, undefined, 6] 
 *       // join()视空位置为空字符串 
 *       console.log(options.join('-')); // "1----5" 
 *  6.2.3 数组索引
 *      要取得或设置数组的值，需要使用中括号并提供相应值的数字索引
 *      数组中元素的数量保存在 length 属性中，这个属性始终返回 0 或大于 0 的值
 *      数组的length不是只读的，通过arr.length=2是可以改变数组长度的，是可以从数组末尾删除或添加元素，填多了返回undefined
 *  6.2.4 监测数组
 *      一个经典的情况下是使用instanceof正常情况下是在一个全局上下文中推荐使用，如果是多个上下文
 *      那么推荐使用Array.isArray(value)
 *  6.2.5 迭代器方法 3个
 *      arr.keys()   返回的是数组索引
 *      arr.values() 返回的是数组的元素
 *      arr.entries()返回的是索引/值对的迭代器（索引和值）
 *      可通过Array.form()再次转成数组
 *  6.2.6 复制和填充方法
 *      
 */
const meat = "meat"
console.log(Array.from(meat)) // [ 'm', 'e', 'a', 't' ]

const m = new Map().set(1)
    .set(2, 3);
const s = new Set().add(1)
    .add(2)
    .add(3)
    .add(4);
console.log(Array.from(m))
console.log(m)
function getArgs() {
    console.log(arguments,'arguments')
}
console.log(Array.from(s,item=>item+1))
console.log(Array.from(s, function (x) { return x+this.num}, {num:2}))

console.log([] instanceof Array)
const arr = ['a','b','c']
console.log(Array.from(arr.entries()))
console.log(Array.isArray(arr.entries()))
for (const [index,value] of arr.entries()){
    console.log(index,'22')
    console.log(value,'33')
}


